const express = require('express');
const fs = require('fs');
const path = require('path');
const bodyParser = require('body-parser');
const router = express.Router();

// 文件目标目录
const targetDir = path.join(__dirname, '../static_excel_json');
if (!fs.existsSync(targetDir)) {
  fs.mkdirSync(targetDir, { recursive: true });
}

// GET示例
router.get('/users', (req, res) => {
  res.json([
    { id: 1, name: '张三' },
    { id: 2, name: '李四' }
  ]);
});
// 检查JSON文件是否存在的接口
router.get('/check-json/:id', (req, res) => {
  try {
    const { id } = req.params;
    // 验证参数
    if (!id) {
      return res.status(400).json({
        success: false,
        message: 'id参数是必需的'
      });
    }

    // 构建文件路径
    const filePath = path.join(targetDir, `${id}.json`);

    // 检查文件是否存在
    const fileExists = fs.existsSync(filePath);

    if (fileExists) {
      // 可选：读取文件内容返回
      // const fileContent = fs.readFileSync(filePath, 'utf-8');
      // const jsonData = JSON.parse(fileContent);

      res.json({
        success: true,
        exists: true,
        message: '文件存在',
        filePath: filePath
        // 可选: data: jsonData
      });
    } else {
      res.json({
        success: true,
        exists: false,
        message: '文件不存在',
        filePath: filePath
      });
    }
  } catch (error) {
    console.error('检查文件时出错:', error);
    res.status(500).json({
      success: false,
      message: '服务器内部错误',
      error: error.message
    });
  }
});
// 将excel保存为json文件
router.post('/save-json', (req, res) => {
  try {
    const { id, jsonData } = req.body;

    // 验证参数
    if (!id || !jsonData) {
      return res.status(400).json({
        success: false,
        message: 'id和jsonData参数是必需的'
      });
    }

    // 确保jsonData是对象
    let dataToSave;
    if (typeof jsonData === 'string') {
      try {
        dataToSave = JSON.parse(jsonData);
      } catch (e) {
        return res.status(400).json({
          success: false,
          message: 'jsonData必须是有效的JSON字符串或对象'
        });
      }
    } else if (typeof jsonData === 'object') {
      dataToSave = jsonData;
    } else {
      return res.status(400).json({
        success: false,
        message: 'jsonData必须是有效的JSON字符串或对象'
      });
    }

    // 构建文件路径
    const filePath = path.join(targetDir, `${id}.json`);

    // 写入文件
    fs.writeFileSync(filePath, JSON.stringify(dataToSave, null, 2));

    res.json({
      success: true,
      message: '文件保存成功',
      filePath: filePath
    });
  } catch (error) {
    console.error('保存文件时出错:', error);
    res.status(500).json({
      success: false,
      message: '服务器内部错误',
      error: error.message
    });
  }
});
// 获取文件info
router.get('/get-file-info/:id', (req, res) => { 
  try {
    const { id } = req.params;

    // 验证参数
    if (!id) {
      return res.status(400).json({
        success: false,
        message: 'id参数是必需的'
      });
    }

    // 构建文件路径
    const filePath = path.join(targetDir, `${id}.json`);

    // 检查文件是否存在
    if (!fs.existsSync(filePath)) {
      return res.status(404).json({
        success: false,
        message: '文件不存在',
        filePath: filePath
      });
    }

    // 读取文件内容
    const fileContent = fs.readFileSync(filePath, 'utf-8');
    const jsonData = JSON.parse(fileContent);

    // res.json({
    //   success: true,
    //   message: '文件获取成功',
    //   id: id,
    //   data: jsonData,
    //   filePath: filePath
    // });
    res.send(JSON.stringify(jsonData.info))

  } catch (error) {
    console.error('获取文件时出错:', error);

    // 处理JSON解析错误
    if (error instanceof SyntaxError) {
      return res.status(500).json({
        success: false,
        message: '文件内容不是有效的JSON格式',
        error: error.message
      });
    }

    res.status(500).json({
      success: false,
      message: '服务器内部错误',
      error: error.message
    });
  }
});
// 获取JSON文件内容的接口
router.post('/get-json/:id', (req, res) => {
  try {
    const { id } = req.params;

    // 验证参数
    if (!id) {
      return res.status(400).json({
        success: false,
        message: 'id参数是必需的'
      });
    }

    // 构建文件路径
    const filePath = path.join(targetDir, `${id}.json`);

    // 检查文件是否存在
    if (!fs.existsSync(filePath)) {
      return res.status(404).json({
        success: false,
        message: '文件不存在',
        filePath: filePath
      });
    }

    // 读取文件内容
    const fileContent = fs.readFileSync(filePath, 'utf-8');
    const jsonData = JSON.parse(fileContent);

    // res.json({
    //   success: true,
    //   message: '文件获取成功',
    //   id: id,
    //   data: jsonData,
    //   filePath: filePath
    // });
    res.send(JSON.stringify(jsonData.sheets))

  } catch (error) {
    console.error('获取文件时出错:', error);

    // 处理JSON解析错误
    if (error instanceof SyntaxError) {
      return res.status(500).json({
        success: false,
        message: '文件内容不是有效的JSON格式',
        error: error.message
      });
    }

    res.status(500).json({
      success: false,
      message: '服务器内部错误',
      error: error.message
    });
  }
});

// 带参数的GET示例
router.get('/users/:id', (req, res) => {
  const { id } = req.params;
  res.json({ id, name: `用户${id}` });
});

module.exports = router;